Typical high-performance processors use a technique called simultaneous multi-threading (SMT) to more effectively utilize resources and further improve efficiency. This technique allows multiple independent threads to run on a single processor and to issue multiple instructions each cycle. SMT is a means of converting thread-level parallelism (i.e., multiple processors) to instruction-level parallelism (ILP) (i.e., one processor). In general, ILP is a measure of the average number of instructions in a program that a processor can evaluate simultaneously.
To an operating system, a SMT processor appears as two logical processors capable of running multiple threads simultaneously. Efficiently running multiple threads simultaneously on the same processor using SMT involves effectively scheduling thread execution and controlling thread access to shared processor resources.